const express = require('express')
const app = express()
const port = 6300
// 导入jwt配置文件
const config = require('./config')
// 解析token的中间件
const expressJWT = require('express-jwt')

// 导入 cors 中间件
const cors = require('cors')

app.use(cors())

app.use(express.json());
app.use(express.urlencoded({ extended: false }));


app.use(expressJWT({secret: config.jwtSecretKey}).unless({
  path: [/^\/user\//]
}))

// 封装错误处理函数
app.use((req, res, next) => {
  res.cc = (err, status=1, data={}) => {
    res.send({
      status,
      data,
      message: err instanceof Error ? err.message : err
    })
  }
  next()
})

// 错误中间件 当token失效时 返回信息
app.use((err, req, res, next) => {
  if (err.name == 'UnauthorizedError') {
    res.status(401).send({
      status: 1,
      data: {},
      message: '身份认证失败！'
    })
  }
})


// 导入并注册用户路由模块
app.use('/user', require('./router/user'))
app.use('/api', require('./router/list'))


async function main() {
  try{
    app.listen(port, function() {
      console.log(`express running on http://127.0.0.1:${port}`)
    })
  } catch(err) {
    console.log(err, 44)
  }
}
main()
